// pages/dailyperformance/history/detail.js
import http from '../../../utils/request.js'

// 备选方案：直接定义 getToday 函数，避免导入问题
function getToday() {
    const today = new Date();
    const year = today.getFullYear();
    const month = String(today.getMonth() + 1).padStart(2, '0');
    const day = String(today.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
}

// 尝试导入，如果失败使用本地定义
let importedGetToday;
try {
    // 注意：使用绝对路径避免相对路径问题
    importedGetToday = require('/utils/util').getToday;
} catch (e) {
    console.warn('导入 getToday 失败，使用本地定义', e);
    importedGetToday = getToday;
}

// 统一使用安全的 getToday
const safeGetToday = importedGetToday || getToday;

Page({
    data: {
        selectedDate: '', // 选择的日期
        records: [], // 该日期的所有记录
        currentRecordIndex: 0, // 当前查看的记录索引
        loading: true, // 加载状态
        error: null, // 错误信息
        showCopyHint: false, // 新增：控制复制提示显示状态
        copyHintTimer: null // 新增：存储定时器ID
    },

    onLoad(options) {
        // 从路由参数获取日期和记录索引
        const {
            date,
            index = 0
        } = options;

        // 使用安全的 getToday
        const selectedDate = date || safeGetToday();

        if (!selectedDate) {
            wx.showToast({
                title: '无效的日期参数',
                icon: 'error'
            })
            setTimeout(() => wx.navigateBack(), 1500)
            return
        }

        this.setData({
            selectedDate,
            currentRecordIndex: parseInt(index) || 0
        }, this.fetchRecords)
    },

    // 获取指定日期的所有记录
    async fetchRecords() {
        this.setData({
            loading: true,
            error: null
        })

        try {
            // 使用 today 参数代替 record_date
            const res = await http.get(`/performance_records?today=${this.data.selectedDate}`)

            // 适配新的数据结构
            if (res.status === 'success' && Array.isArray(res.data.records)) {
                console.log("📋 获取到的记录:", res.data.records);

                // 确保每条记录都有 template_name
                const records = res.data.records.map(record => {
                    return {
                        ...record,
                        template_name: record.template_name || '未命名模板' // 默认值
                    }
                });

                this.setData({
                    records,
                    loading: false
                })
            } else {
                throw new Error(res.message || '获取业绩记录失败')
            }
        } catch (err) {
            console.error('获取业绩记录失败:', err)
            this.setData({
                error: err.message || '服务器错误，请稍后再试',
                loading: false
            })
        }
    },

    // 日期选择器变更事件处理
    handleDateChange(e) {
        const date = e.detail.value;
        console.log('选择的日期:', date);

        this.setData({
            selectedDate: date,
            records: [], // 清空现有记录
            error: null,
            loading: true,
            searchDate: date // 设置查询日期
        }, () => {
            // 重新获取选择的日期记录
            this.fetchRecords();
        });
    },

    // 切换当前查看的记录
    handleSwitchRecord(e) {
        const index = e.currentTarget.dataset.index
        this.setData({
            currentRecordIndex: index
        })
    },

    // 格式化时间显示
    formatTime(time) {
        if (!time) return ''

        // 直接实现格式化，避免额外依赖
        const date = new Date(time);
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');
        const hours = String(date.getHours()).padStart(2, '0');
        const minutes = String(date.getMinutes()).padStart(2, '0');

        return `${year}-${month}-${day} ${hours}:${minutes}`;
    },

    // 返回列表页
    handleBackToList() {
        wx.navigateBack()
    },

    // 新增复制方法
    copyGeneratedText(e) {
        const textToCopy = e.currentTarget.dataset.text;
        if (!textToCopy) return;

        // 先将旧的定时器清除
        if (this.data.copyHintTimer) {
            clearTimeout(this.data.copyHintTimer);
        }

        // 复制文本到剪贴板
        wx.setClipboardData({
            data: textToCopy,
            success: () => {
                // 显示复制成功的提示
                // this.setData({ showCopyHint: true });

                // 设置3秒后隐藏提示
                const timer = setTimeout(() => {
                    this.setData({
                        showCopyHint: false
                    });
                }, 3000);

                this.setData({
                    copyHintTimer: timer
                });
            },
            fail: (err) => {
                wx.showToast({
                    title: '复制失败',
                    icon: 'none'
                });
                console.error('复制失败:', err);
            }
        });
    },

    // 组件卸载时清除定时器
    onUnload() {
        if (this.data.copyHintTimer) {
            clearTimeout(this.data.copyHintTimer);
        }
    }
})